package ln.javatest.day13.demo02;
/*
练习：递归打印多级目录
需求：
    遍历c:\\abc文件夹中的文件，以及它子文件夹中的文件
    找到后缀为.txt的文件
    c:\\abc
    c:\\abc\\a
    c:\\abc\\b
    c:\\abc\\a\\1.txt
    c:\\abc\\b\\2.txt
*/

import java.io.File;

public class Demo05Recurison {
    public static void main(String[] args) {
        File file = new File("C:\\abc");
        getAllFile(file);

    }
    /*
    定义一个方法，参数传递File类型的目录
    方法中对目录进行遍历
    */
    public static void getAllFile(File dir){
        File[] files = dir.listFiles();
        for (File fileName : files) {
            //对遍历得到的File对象进行判断是否是文件夹
            if(fileName.isDirectory()){
                //是文件夹，则继续遍历这个文件夹
                //自己本身就是遍历文件夹的，自己调用自己
                getAllFile(fileName);
            }else{
                //是一个文件打印即可
                /*
                只要.java结尾的文件
                1.把File对象fileName转换为字符串对象
                */
                //String name = fileName.getName(); //1.txt
                //String name = fileName.getPath(); //c:\\abc\\a\\1.txt
                //String name = fileName.toString();//和getPath方法效果一样

                //不管大小写，全都转换为小写
                //name = name.toLowerCase();

                //2.调用String类中的方法endsWith判断字符串是否是以.txt结尾
                //boolean b = name.endsWith(".txt");
                /*if(b){
                    System.out.println(fileName);
                }*/

                //以上可直接用一句
                if(fileName.getName().toLowerCase().endsWith(".txt")){
                    System.out.println(fileName);
                }
            }
        }
    }
}
